// PROGRAMA: IDCPLIB1
// BIBLIOTECA: SISP
// ANALISTA: SOLON MIRANDA
// DATA: 19/03/2003
// FUNCAO: LIBERA REGISTROS PRESOS DO ARQUIVO DID-CADASTRO
package br.com.vti.sisp_sicrim.antigo.controller.programa;

import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Idcplib1A;
import br.com.vti.sisp_sicrim.antigo.model.DidCadastro;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;

/**
 * Classe : Idcplib1 FUNCAO: LIBERA REGISTROS PRESOS DO ARQUIVO DID-CADASTRO *
 * 
 * @author Incode - Data: mai/2014
 * 
 */

@Resource
@Path("/antigo/idcplib1")
public class Idcplib1 {
	// Views utilizadas
	DidCadastro vwDidcad = new DidCadastro();
	// Telas/relatorios utilizados
	Idcplib1A idcplib1A;
	// Includes utilizados
	// Areas globais / session // Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();

	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;

	private Idcplib1A preMapas() {
		idcplib1A = new Idcplib1A(true, sessao);
		return idcplib1A;
	}

	public Idcplib1(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar(Idcplib1A idcplib1A) {
		try {
			main(idcplib1A);
		} catch (Exception e) {
			trataErro(e);
		}
	}

	private void main(Idcplib1A pidcplib1A) {
		if (pidcplib1A == null) {
			primeiraVez = true;
			// idcplib1A = new Idcplib1A (primeiraVez);
			idcplib1A = preMapas();
			idcplib1A.setNavegar("../idcplib1/executar");
			result.include("idcplib1A", idcplib1A);
			idcplib1A.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		} else {
			// retaurar sessao
		}

		idcplib1A.receberTela(false, result);
		while (vwDidcad.pesquisaNumeroRg(idcplib1A.getRg())) {

			continue;
		}
		vwDidcad.fecha();
		Idcpm001 idcpm001 = new Idcpm001(result, sessao);
		idcpm001.executar(null);
	}

	private void trataErro(Exception e) {
		// Retry
		Idcpm001 idcpm001 = new Idcpm001(result, sessao);
		idcpm001.setMensagem("REGISTRO COM RG = " + vwDidcad.getNumeroRg() + "LIBERADO OK.");
		idcpm001.executar(null);
	}
}
